package cn.tedu.oop;

/**
 * @Author 金帮嘉诚
 * @Date 2021-06-10 周四 14:01
 */
/*本类用于测试多态入门案例*/
public class TestDemo {
    public static void main(String[] args) {
        /*创建多态对象进行测试*/
        /*口诀1：父类引用指向子类对象*/
        /*口诀2：编译看左边，运行看右边*/
        /*多态的两个前提，继承+多态缺一不可*/
        /*多态使用的是父类的声明，子类的具体实现*/
        Animal animal=new Cat();
        animal.eat();//多态
        Cat cat=new Cat();
        cat.eat();//重写
        Animal animal1=new Animal();
        animal.eat();//父类
        /*多态不可以调用子类的特有功能，只能调用重写的父类的功能*/
//        animal.jump();
        Animal d=new Dog();
        d.eat();//子类没有重写，不构成多态
        /*多态的出现是为了统一调用标准，向父类看齐
        * 父类声明的功能才能用，子类特有的功能用不了*/

    }
}
class Animal{
    public void eat(){
        System.out.println("Animal");
    }
}
class Cat extends Animal{
    public void eat(){
        System.out.println("Cat");
    }
    public void jump(){
        System.out.println("jump");
    }
}
class Dog extends Animal{

}
